草庐IT

c++ - 从 C++ 中查找 python 函数参数

全部标签

Ruby:如何更改函数调用中参数的值?

我将如何在ruby​​中实现一个函数,如下所示?change_me!(val)更新:我打算做的是:defchange_me!(val)val=val.chopwhileval.end_with?'#'orval.end_with?'/'end这刚刚结束......change_me!'test#///'=>"test#///" 最佳答案 您的想法是错误的。虽然可以在Ruby中执行此操作,但它会过于复杂。正确的做法是:val.change_me!当然,这取决于您要更改的类别。关键是,按照惯例,带有“!”的方法影响调用它们的类实例。所以

Ruby:按值查找散列中的项目

我目前正在使用如下所示的ruby​​哈希:{"employee"=>[{"name"=>"john","level"=>"1","position"=>"S1"},{"name"=>"bill","level"=>"2","position"=>"S2"}]}这是员工的两个例子,我需要能够通过值(value)观来吸引员工。例如,我想获得级别==2的所有员工,或位置==S1的所有员工。我如何在Ruby中执行此操作? 最佳答案 使用Hash#select或Array#select.level_2_employees=infoHash["

ruby-on-rails - 混合 ActiveRecord 查找条件

我想根据created_on>=somedateANDnameINsomelistofnames的组合查找记录。对于“>=”,我必须使用sql条件。对于“IN”,我必须使用条件散列,其中键是:name,值是名称数组。有没有办法将两者结合起来? 最佳答案 您可以在rails2.1及更高版本中使用命名作用域ClassTest"created_on>2005-01-01"named_scope:named_fred,:conditions=>{:name=>"fred"}end那么你可以做Test.created_after_2005.n

ruby - 在采用多个可选参数的方法中,除了第一个参数之外,如何指定?

我有这样的方法:deffoo(fruit='apple',cut="sliced",topping="icecream")#somelogichereend我怎样才能调用它,我只覆盖顶部参数但对其他参数使用默认值,就像这样foo('','','hotfudge')当然这不会按预期工作,但我只想为第三个可选参数提供一个值,并让前两个保持默认值。我知道如何使用散列来做到这一点,但他们是使用上述语法的快捷方式吗? 最佳答案 从Ruby2.0开始,您可以使用关键字参数:deffoo(fruit:'apple',cut:"sliced",to

Ruby 在数组中查找下一个

有没有办法在Ruby数组中找到下一个项目?代码:#FindALLlanguagesif!debuglang=Language.allelselang=Language.where("id=?ORid=?",22,32)end#Getallelementselements=Element.where("human_readableISNOTNULL")lang.eachdo|l|code=l.code.downcaseifFile.exists?(file_path+code+".yml")File.delete(file_path+code+".yml")endt1=Time.nowi

ruby - 具有 block 局部参数的多个 Kernel#local_variables 条目

我在ArchLinux上使用这个版本的Ruby。我还尝试了ruby​​1.9中的第一个代码片段,结果相同。ruby-vruby2.1.0p0(2013-12-25revision44422)[x86_64-linux]uname-aLinuxryantm0j1323.12.7-2-ARCH#1SMPPREEMPTSunJan1213:09:09CET2014x86_64GNU/Linux下面这三个片段是独立的程序。当我使用隐藏变量的block局部变量时,local_variables数组包含3个条目:a=1putslocal_variables.inspect#=>[:a]proc{|

ruby - 如何测试使用 rspec 的 block 的函数

我有一个函数,它接受一个block,打开一个文件,产生并返回:defstart&block.....dosomestuffFile.open("filename","w")do|f|f.write("something")....dosomemorestuffyieldendend我正在尝试使用rspec为其编写测试。我如何stubFile.open以便它将对象f(由我提供)传递给block而不是尝试打开实际文件?像这样的东西:it"shouldtestsomething"domyobject=double("File",{'write'=>true})File.should_rece

ruby-on-rails - RSpec:多次期待一条消息但参数不同

我目前对连续调用的模拟设置了一些期望:规范:@my_mock=mock("a_mock")@options1={:some=>"option"}@options2={:some_other=>"option"}@first_param=mock("first_param")@my_mock.should_receive(:a_message).with(@first_param,@options1)@my_mock.should_receive(:a_message).with(@first_param,@options2)但是,我得到以下信息:Mock"a_mock"received

ruby-on-rails - 使用摩卡,有没有办法用很多参数 stub ?

假设我有这门课classFoodefbar(param1=nil,param2=nil,param3=nil):bar1ifparam1:bar2ifparam2:bar3ifparam3endend我可以使用stubwholebar方法:Foo.any_instance.expects(:bar).at_least_once.returns(false)但是,如果我只想在bar方法的param1为真时stub,我找不到办法:我也看了with,和has_entry,好像只适用于单个参数。我期待这样的功能。Foo.any_instance.expects(:bar).with('true

ruby 默认参数习语

当你想要一个函数的默认参数,但它依赖于另一个参数/另一个变量时,Ruby中的习惯用法是什么?比如在Python中,一个例子是:definsort_right(a,x,lo=0,hi=None):ifhiisNone:hi=len(a)whilelo此处,如果未提供hi,则应为len(a)。您不能在默认参数列表中执行len(a),因此您为它分配一个标记值None,并检查它。Ruby中的等价物是什么? 最佳答案 deffoo(a,l=a.size)end 关于ruby默认参数习语,我们在St